package com.zhiche.lisa.bms.service.statistics;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.zhiche.lisa.bms.dao.model.statistics.StaticWaybillComposite;
import com.zhiche.lisa.bms.pojo.bo.statistics.OrderWaybillBO;
import com.zhiche.lisa.bms.pojo.vo.statistics.OrderWaybillQueryVO;
import com.zhiche.lisa.bms.pojo.vo.statistics.OrderWaybillVO;
import com.zhiche.lisa.bms.pojo.vo.statistics.WaybillCompositeVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 运单统计综合表 服务类
 * </p>
 *
 * @author liangpeng
 * @since 2019-01-18
 */
public interface StaticWaybillCompositeService extends IService<StaticWaybillComposite> {

    /**
     * 运单统计综合查询分页
     */
    Page<OrderWaybillVO> getOrderWaybillDetail(Page<OrderWaybillBO> page);

    /**
     * 根据条件查询所有符合要求的运单统计综合查询
     *
     * @return
     */
    List<OrderWaybillVO> queryOrderWaybillDetail(OrderWaybillQueryVO queryVO);

    /**
     * 创建运单综合统计表
     */
    void insertWaybillComposite();

    /**
     * 更新运单发生变化
     */
    void updateWaybill(int nThreads, int intCount);

    /**
     * 更新发生变化的账单
     */
    void updateBill(int nThreads, int intCount);

    /**
     * 更新运单的总收入
     *
     * @param nThreads
     */
    void updateAmount(int nThreads, int intCount);

    // /**
    //  * 更新发生变化的价格
    //  */
    // void updatePrice(int nThreads, int intCount);

    /**
     * 处理数据
     *
     * @param nThreads
     * @param intCount
     */
    void updateNovoPayCost(int nThreads, int intCount);

    /**
     * 得到导出文件的表头
     *
     * @return
     */
    Map<String, Object> getOrderWaybillDataMap();

    /**
     * 计算更新的运单的标准价
     */
    void updateWaybillStandPrice(int nThreads, int intCount);

    /**
     * 得到删除的运单
     *
     * @param nThreads
     * @param intCount
     * @return
     */
    void getDeletedWaybill(int nThreads, int intCount);

    /**
     * 格式排除字段
     *
     * @return
     */
    List<String> getExcludeList();

    /**
     * 更新合同和暂估价
     *
     * @param nThreads
     * @param intCount
     */
    void updateWaybillContractAndEstPrice(int nThreads, int intCount);

    /**
     * 成本缺失明细导出数据
     *
     * @return
     */
    List<WaybillCompositeVO> getCostMissingDetail();

    /**
     * 获取对应的导出map
     *
     * @return
     */
    Map<String, Object> getCostMissingDetailExportMap();
}
